#ifndef PERSONNAGE_H
#define PERSONNAGE_H
#include "Terrain.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef struct sTerrain Terrain;
/**
@struct Personnage Terrain.h "~/lif7-projet-jetpack/src/Personnage.h" Structure définissant la possition du Personnage. \n
*/
struct sPersonnage
{

    int posX, posY, w, h;

};
typedef struct sPersonnage Personnage;

/**
@brief <B> Brief Description </B> Initialise le personnage. \n
@details <B> Description </B> perInit initialise le personnage (après vérification) à 0. \n
@param[in,out] Personnage Pointeur sur pPer. \n
*/
void perInit(Personnage * pPer);

/**
@brief <B> Brief Description </B> Libère la mémoire allouée.  \n
@details <B> Description </B> perLibere libère la mémoire allouée et remet la position posX à 0. \n
@param[in,out] Personnage Pointeur sur pPer \n
*/
void perLibere(Personnage * pPer);


/**
@brief <B> Brief Description </B> . \n
@details <B> Description </B> persMonter permet de faire monter le personnage durant le jeu. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@param[in,out] Terrain Pointeur sur pTer. \n
*/
void persMonter(Personnage * pPer, Terrain * pTer);

/**
@brief <B> Brief Description </B> . \n
@details <B> Description </B> persDescendre gère la gravité. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@param[in,out] Terrain Pointeur sur pTer. \n
*/
void persDescendre(Personnage * pPer, Terrain * pTer);

/**
@brief <B> Brief Description </B> Fait avancer le personnage . \n
@details <B> Description </B> persAvance Fait avancer le personnage. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@param[in,out] Terrain Pointeur sur pTer. \n
*/
void persAvance(Personnage * pPer, Terrain * pTer);

/**
@brief <B> Brief Description </B> Fait reculer le personnage . \n
@details <B> Description </B> persAvance Fait reculer le personnage. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@param[in,out] Terrain Pointeur sur pTer. \n
*/
void persRecule(Personnage * pPer, Terrain * pTer);

/**
@brief <B> Brief Description </B> Récupère la position X. \n
@details <B> Description </B>  persGetX permet de récuperer la position X du personnage. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@return Retourne un float PosY. \n
*/
float persGetX(const Personnage * pPer);

/**
@brief <B> Brief Description </B> Récupère la position Y. \n
@details <B> Description </B>  persGetY permet de récuperer la position Y du personnage. \n
@param[in,out] Personnage Pointeur sur pPer. \n
@return Retourne un float PosY. \n
*/
float persGetY(const Personnage * pPer);

#endif
